package com.ccnf.service;

import com.ccnf.core.bean.TokenParams;
import com.ccnf.model.ao.SmsAO;
import com.ccnf.model.ao.SmsAuthAO;
import com.ccnf.model.entity.SocialUser;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

public interface SaasService {

    /**
     * 处理会管家入口和微信跳转回来的地址
     * @param request
     * @return
     */
    String saasLoginUrl(HttpServletRequest request);

    /**
     * 获取会管家用户信息
     * @param unionId 会管家用户ID
     * @return
     */
    SocialUser saasUserInfo(String unionId);

    /**
     * 获取微信分享的配置数据
     * @param tokenParams 令牌参数
     * @param shareUrl 分享地址
     * @return
     */
    Map<String, String> saasShareConfig(TokenParams tokenParams, String shareUrl);

    /**
     * 处理微信跳转回来的参数
     * @param requestParams
     * @return
     */
    String handleSaasLoignReturn(Map<String, String> requestParams);

    /**
     * 获取微信分享配置数据，并返回入口地址
     * @param request
     * @param tokenParams 令牌参数
     * @param currentUrl 当前页面地址
     * @return
     */
    Map<String, Object> shareEntry(HttpServletRequest request, TokenParams tokenParams, String currentUrl);

    /**
     * 获取腾讯对象云存储配置数据
     * @return
     */
    Map<String, Object> getTxCosConfig();

    /**
     * 发送短信
     * @param expoId 展会ID
     * @param phone 发送手机号
     * @param smsContent 短信内容
     * @return
     */
    boolean saasSendSms(Long expoId, String phone, String smsContent);

    /**
     * 发送手机短信验证码
     * @param tokenParams 令牌参数
     * @param phone 手机号
     */
    void sendPhoneCaptcha(TokenParams tokenParams, String phone);

    /**
     * 验证手机验证码
     * @param phone 手机号
     * @param captcha 验证码
     * @param tokenParams 令牌参数
     */
    void verifyPhoneCaptcha(String phone, String captcha, TokenParams tokenParams);

    /**
     * 发送用户授权短信
     * @param smsAuthAO 短信授权手机号
     * @param tokenParams 令牌参数
     * @return
     */
    List<SmsAO> smsUserAuth(SmsAuthAO smsAuthAO, TokenParams tokenParams);
}